8317. Квадрат разности

 

Дано натуральное число n. Найдите и выведите квадрат разности максимального и минимального чисел, составленных из цифр числа n.

Например, если задано число 30605, то максимальным числом, составленным их цифр этого числа будет число 65300, а минимальным 356 (наименьшим будет 00356, но ведущие нули не считаются). Искомый квадрат разности равен (65300 – 356 ) * (65300 – 356) = 4217723136.

 

Вход. Одно натуральное число n (1 ≤ n ≤ 109).

 

Выход. Выведите требуемый квадрат разности.

 

Пример входа

Пример выхода

30605

4217723136

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Прочитаем число в символьный массив. Отсортируем цифры по убыванию, получим наибольшее число a. Отсортируем цифры по возрастанию, получим наименьшее число b. Вычислим их квадрат разности.

 

Реализация алгоритма

Объявим символьный массив.

 

char s[20];

 

Читаем строку.

 

gets(s);

 

Сортируем цифры по убыванию. Преобразовываем строку в число a.

 

sort(s, s + strlen(s), greater<char>());

sscanf(s, "%lld", &a);

 

Сортируем цифры по возрастанию. Преобразовываем строку в число b.

 

sort(s, s + strlen(s), less<char>());

sscanf(s, "%lld", &b);

 

Выводим искомый квадрат разности.

 

printf("%lld\n", (a - b) * (a - b));

 

Реализация алгоритма – string

 

#include <iostream>

#include <set>

#include <string>

#include <algorithm>

using namespace std;

 

long long a, b;

string s;

 

int main(void)

{

  cin >> s;

  sort(s.begin(), s.end(), greater<char>());

  sscanf(s.c_str(), "%lld", &a);

 

  sort(s.begin(), s.end(), less<char>());

  sscanf(s.c_str(), "%lld", &b);

 

  printf("%lld\n", (a - b) * (a - b));

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s[] = con.nextLine().split("");

    // s = {"1", "2", "3", "4", "5", "6"}

  

    Arrays.sort(s);

    long a = Integer.parseInt(String.join("", s));

  

    Arrays.sort(s,Collections.reverseOrder());

    long b = Integer.parseInt(String.join("", s));

  

    System.out.println((a - b) * (a - b));

    con.close();

  }

}